import router, {detailRoute} from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

NProgress.configure({ showSpinner: false }) // NProgress Configuration

const whiteList = ['/login', '/auth-redirect'] // no redirect whitelist

const catFlagMap = {
	areaFlag: '户型',
	familyFlag: '常住人口',
	styleFlag: '风格',
	typeFlag: '原始状态',
	cityFlag: '城市',
	yearFlag: '年度',
}

router.beforeEach(async(to, from, next) => {
	// start progress bar
	NProgress.start();

	// set page title
	// if (to.meta.title) {
	// 	document.title = to.path === '/works' ? (catFlagMap[to.query.cat_id] || to.meta.title) : to.meta.title;
	// }

	if(!store.state.addRoutes.length) {
		// 生成动态路由
		const accessRoutes = await store.dispatch('generateRoutes');
		console.log('accessRoutes-', accessRoutes);

		// 动态添加权限路由
		router.addRoutes([...accessRoutes].concat(detailRoute));
		if(!store.state.topList || !store.state.topList.length) {
			const data = await store.dispatch('getTopImgList');
		}
		next({ ...to, replace: true });
	} else {
		if(!store.state.topList || !store.state.topList.length) {
			const data = await store.dispatch('getTopImgList');
		}
		next();
	}

	// if(!store.state.topList || !store.state.topList.length) {
	// 	const data = await store.dispatch('getTopImgList');
	// 	next({ ...to, replace: true });
	// } else {
	// 	next();
	// }

	// determine whether the user has logged in
	// const hasToken = getToken()

	// if (hasToken) {
	// 	if (to.path === '/login') {
	// 		// if is logged in, redirect to the home page
	// 		next({ path: '/' })
	// 		NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
	// 	} else {
	// 		// determine whether the user has obtained his permission roles through getInfo
	// 		const hasRoles = store.getters.roles && store.getters.roles.length > 0
	// 		if (hasRoles) {
	// 			next()
	// 		} else {
	// 			try {
	// 				// get user info
	// 				// note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
	// 				const { roles } = await store.dispatch('user/getInfo')

	// 				// generate accessible routes map based on roles
	// 				const accessRoutes = await store.dispatch('permission/generateRoutes', roles)

	// 				// dynamically add accessible routes
	// 				router.addRoutes(accessRoutes)

	// 				// hack method to ensure that addRoutes is complete
	// 				// set the replace: true, so the navigation will not leave a history record
	// 				next({ ...to, replace: true })
	// 			} catch (error) {
	// 				// remove token and go to login page to re-login
	// 				await store.dispatch('user/resetToken')
	// 				Message.error(error || 'Has Error')
	// 				next(`/login?redirect=${to.path}`)
	// 				NProgress.done()
	// 			}
	// 		}
	// 	}
	// } else {
	// 	/* has no token*/

	// 	if (whiteList.indexOf(to.path) !== -1) {
	// 		// in the free login whitelist, go directly
	// 		next()
	// 	} else {
	// 		// other pages that do not have permission to access are redirected to the login page.
	// 		next(`/login?redirect=${to.path}`)
	// 		NProgress.done()
	// 	}
	// }
})

router.afterEach((to, from) => {
	// finish progress bar
	NProgress.done()
})
